import * as vscode from 'vscode';
import {dedent} from "../../../utils";

// documentation中使用了代码块，代码块中写的事makedown格式，首行不能为空
let progressTimerItems = [
    {
        "label": "ProgressTimer_Create",
        "insertText": dedent`
        GUI:ProgressTimer_Create(\${1:parent}, \${2:ID}, \${3:x}, \${4:y}, \${5:img})
        `,
        "documentation": dedent`# 创建圆形进度条
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数   | 必选 | 类型   | 注释        |
        | :----- | :--- | :----- | :---------- |
        | parent | 是   | obj    | 父节点对象  |
        | ID     | 是   | string | 唯一ID      |
        | x      | 是   | int    | 位置 横坐标 |
        | y      | 是   | int    | 位置 纵坐标 |
        | img    | 是   | string | 图片路径    |

        - 示例代码

        \`\`\`
        local ui_img = "res/private/main/Skill/hero2/0_0001.png"
        local heroProgress = GUI:ProgressTimer_Create(parent, "heroProgress", 0, 0, ui_img)
        \`\`\`
        `
    },
    {
        "label": "ProgressTimer_setPercentage",
        "insertText": dedent`
        GUI:ProgressTimer_setPercentage(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置圆形进度条百分比
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数   | 必选 | 类型 | 注释        |
        | :----- | :--- | :--- | :---------- |
        | widget | 是   | obj  | 控件对象    |
        | value  | 是   | int  | 进度(0-100) |

        `
    },
    {
        "label": "ProgressTimer_getPercentage",
        "insertText": dedent`
        GUI:ProgressTimer_getPercentage(\${1:widget})
        `,
        "documentation": dedent`# 获取圆形进度条百分比
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数   | 必选 | 类型 | 注释     |
        | :----- | :--- | :--- | :------- |
        | widget | 是   | obj  | 控件对象 |

        `
    },
    {
        "label": "ProgressTimer_setReverseDirection",
        "insertText": dedent`
        GUI:ProgressTimer_setReverseDirection(\${1:widget}, \${2:value})
        `,
        "documentation": dedent`# 设置圆形进度条方向
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数   | 必选 | 类型 | 注释                     |
        | :----- | :--- | :--- | :----------------------- |
        | widget | 是   | obj  | 控件对象                 |
        | value  | 是   | bool | true 顺时针 false 逆时针 |

        `
    },
    {
        "label": "ProgressTimer_progressFromTo",
        "insertText": dedent`
        GUI:ProgressTimer_progressFromTo(\${1:widget}, \${2:time}, \${3:from}, \${4:to}, \${5:completeCB})
        `,
        "documentation": dedent`# 设置圆形进度条动作和回调函数
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数       | 必选 | 类型     | 注释            |
        | :--------- | :--- | :------- | :-------------- |
        | widget     | 是   | obj      | 控件对象        |
        | time       | 是   | int      | 时间            |
        | from       | 是   | int      | 开始进度(0-100) |
        | to         | 是   | int      | 结束进度(0-100) |
        | completeCB | 是   | function | 回调函数        |

        `
    },
    {
        "label": "ProgressTimer_progressTo",
        "insertText": dedent`
        GUI:ProgressTimer_progressTo(\${1:widget}, \${2:time}, \${3:to}, \${4:completeCB}, \${5:tag})
        `,
        "documentation": dedent`# 设置圆形进度条动作和回调函数
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数       | 必选 | 类型     | 注释            |
        | :--------- | :--- | :------- | :-------------- |
        | widget     | 是   | obj      | 控件对象        |
        | time       | 是   | int      | 时间            |
        | to         | 是   | int      | 结束进度(0-100) |
        | completeCB | 是   | function | 回调函数        |
        | tag        | 是   | int      | 标记            |

        `
    },
    {
        "label": "ProgressTimer_ChangeImg",
        "insertText": dedent`
        GUI:ProgressTimer_ChangeImg(\${1:widget}, \${2:img})
        `,
        "documentation": dedent`# 设置圆形进度条背景图
        [在线文档](http://engine-doc.996m2.com/web/#/22/2172)

        | 参数   | 必选 | 类型   | 注释     |
        | :----- | :--- | :----- | :------- |
        | widget | 是   | obj    | 控件对象 |
        | img    | 是   | string | 图片路径 |

        `
    }
]




export function getCompletionItems(): vscode.CompletionItem[] {


    const completionItems: vscode.CompletionItem[] = [];
    progressTimerItems.forEach((item: any) => {
        completionItems.push(createFunctionCompletionItem(item.label, item.insertText, item.documentation));
    });
    return completionItems;
}

function createFunctionCompletionItem(label: string, insertText: string, documentation?: string): vscode.CompletionItem {
    const item = new vscode.CompletionItem(label, vscode.CompletionItemKind.Function);
    item.insertText = new vscode.SnippetString(insertText);
    if (documentation) {
        item.documentation = new vscode.MarkdownString(documentation);
    }
    return item;
}
